<template>
    <div v-html="html" class='richtext'>
    </div>
</template>

<script setup>
import {Marked} from 'marked'
import {onMounted, ref, onUpdated} from 'vue'
    const props = defineProps({
        richtext: {
            type: String,
            requrie: true
        }
    })
    const html = ref('<p>获取文章中</p>')
    const marked = new Marked()

    // 测试用的markdown文章
    const testMarkdown = `
# 科学占卜开发
## 前言

​	当今时代发展迅速，AI大模型的浪潮席卷整个互联网行业，对不同的行业的各个领域产生了前所未有的冲击。如今，各类语言大模型百花齐放，上至GPT-4.0，下至自研"小"模型，在行业龙头的引领下，整个开源社区发展迅速一片欣欣向荣，百花齐放。

​	从目前的状况分析来看，大模型在文本生成，图像识别与生成，智能对话方面有着极强的能力。通过简单的端口调用大型模型或者是在个人电脑上进行小模型训练，都能得出差强人意的结果，目前这些技术已经被广泛应用在互联网的各个方面，具体来说例如大学生的大部分的课堂作业以及文档，打工人的讲演稿在目前来说大都是由AI完成的，当然，本文是手写的。

​	不仅如此，整体的AI行业还有很多未知的前景，利用AI强大的推理能力，我们可以提前预知到很多曾经无法预测的事物，譬如气象以及地壳运动的预测，金融市场的预测甚至是国际的局势(当然这里有夸大的成分，因为我也不知道需要多大的算力才能达到这样的效果)，这里只是简单的抛砖引玉，我相信技术能够切实地改善我们的生活，但是时间紧张，我们在这里先暂时回到我们今天的主题：科学占卜。

## 项目介绍

### 概要

​	本项目以百度ERNIE Speed大模型作为基础进行拓展开发，前端基于Vue.js开发的的小程序界面，后端基于SpringBoot与MySql开发的信息与用户管理系统，旨在开发出一款能够受人们接受的占卜软件，即并非古板的算命，而是能够给用户提供情绪价值的占卜，以更贴合现代人的心理。我们的目前目标是能够使占卜能够取代真人的占卜:
   
   ### 进展

- 目前小程序的初步开发已在进行，已经有了一个初步的界面，详情由泳霖来讲述。
- 后端以及数据库的初步设计开发已经完成，~~仍有需要改动的地方，譬如目前单一用户只有一个会话~~，按理来说应该是单个用户可拥有多个对话，目前后端已完成用户--会话--消息的关系模式的开发。
- 大模型方面，目前的数据集依旧在收集以及编写中，我们在最开始的开发中还在研究这个数据的训练应该如何进行，目前有两种方案:
  1. 通过第三方平台托管训练
  2. 自行训练
- 目前的效果是基于Prompt(提示词)实现的，即通过在对话开始前先对大模型进行"洗脑"，让他理解我们将要进行什么行为，目前通过对比一系列的大模型，可以发现效果居然不算太差。

### 存在的问题

- 缺少大模型训练的人员。
- 大模型的数据集仍然需要时间。
- 后台的管理系统可能存在bug，需要时间排查。
- 可能的问题：缺乏一个前端的美工。

### 下一步计划

- 前端部分，制作不同的占卜界面，提供多种占卜方式。
- 后端进一步优化数据结构，设计更合理的模式。
- 大模型方面，我们将考虑编写爬虫，收集更多合理的资料进行数据的训练，现在在大模型的操作方面我们团队内的二人还不算熟悉，还需要花费一些时间进行学习。
- 寻找一个专门负责大模型训练的人员，或者由目前二人学习后执行。

### 里程碑节点

- 前端实现更多占卜界面以及第三方登录效果。
  - 目标:实现效果
  - 时间:2-3周
- 后端效果优化
  - 目标:实现用户的数据管理无误，并且准确接入大模型接口
  - 时间:2-3周
- 大模型训练
  - 目标:训练出一个可用于大模型的精调数据，以实现针对具体的事件进行科学占卜分析
  - 时间:4-5周(取决于开发人员)

### 类似的项目

目前根据一段时间的搜索(似乎大家更喜欢叫这个为调研)，总结出市场上的几种常见的类似的占卜软件:

1. 无使用大模型的脚本化占卜，结果已内定，例如:[易经占卜](http://zw.eqlife.cn/zhouyi/), [塔罗网在线抽牌](https://p.taluo.com/)等网站，这类项目的明显缺点就是文本是早已写死的"吉祥话"，内容空洞，缺乏感情，用户的体验不会太好。
   `

    onUpdated(() => {
        try {
        // html.value = marked.parse(props.richtext)
        html.value = marked.parse(testMarkdown)
        }
        catch(err) {
            console.log("文章挂载失败: \n" + err)
        }
    })
    
    
</script>

<style src="@/styles/components/Content.scss" scoped>

</style>